      SUBROUTINE CLEGQ(Z,M,NMAX,Q)                                      00010000
CCC           THE ASSOCIATED LEGENDRE FUNCTION OF SECOND KIND WITH      00020000
CCC           COMPLEX ARGUMENT OF ORDER M AND DEGREE 0 TO NMAX.         00030000
CCC           Q(M,N,Z) : 0<CDABS(Z)<1.0 OR CDABS(Z)>1.0 ,  N = 0-NMAX   00040000
CCC           Q(0,N,Z) : UPWARD RECURSION FOR CDABS(Z) < 0.1            00050000
CCC           Q(0,N,Z) : DOWNWARD RECURSION FOR CDABS(Z) > 0.1          00060000
CCC           PROGRAMMED BY S.ASANO IN 1973                             00070000
CCC   -------------------------------- MODIFIED IN 1977-----------------00080000
      IMPLICIT COMPLEX*16(A-H,O-Z)                                      00090000
      REAL*8  RR,RI                                                     00100000
      PARAMETER  (NLMT=200)                                             00110002
      DIMENSION  Q(NMAX),QM0(NLMT),QM1(NLMT)                            00120001
      NM1=NMAX+1                                                        00130000
      IF(CDABS(Z-1.D0).LT.1.D-10) GO TO 1                               00140002
      IF(NMAX.GE.NLMT) GO TO 1                                          00150001
      GO TO 2                                                           00160000
    1 WRITE(6,100)                                                      00170000
  100 FORMAT(1H0,15X,'** <CLEGQ>  VALUE OF PARAMETER EXCEEDS THE LIMIT  00180002
     1  -   RETURN WITH NO CALCULATION' /)                              00190002
      RETURN                                                            00200000
    2 AA=1.D0/CDSQRT(Z*Z-1.D0)                                          00210000
      BB=CDLOG((Z+1.D0)/(Z-1.D0))/2.D0                                  00220000
      RR=DREAL(BB)                                                      00230000
      IF(DABS(RR).LT.1.D-10)  RR=0.D0                                   00240000
      RI=DIMAG(BB)                                                      00250000
      IF(DABS(RI).LT.1.D-10)  RI=0.D0                                   00260000
      BB=DCMPLX(RR,RI)                                                  00270000
      IF(CDABS(Z).GE.0.1D0) GO TO 8                                     00280000
      QM0(1)=BB                                                         00290000
      QM0(2)=Z*BB-1.D0                                                  00300000
      DO 50 N=1,NMAX                                                    00310000
   50 QM0(N+2)=(DFLOAT(N+N+1)*Z*QM0(N+1)-DFLOAT(N)*QM0(N))/DFLOAT(N+1)  00320000
      GO TO 9                                                           00330000
    8 LMT=NMAX+20+(2.0/CDABS(Z))                                        00340000
      S1=(0.D0,1.D-20)                                                  00350000
      S2=(7.D-21,0.D0)                                                  00360000
      DO 10 LL=1,LMT                                                    00370000
      L=LMT-LL                                                          00380000
      L1=L+1                                                            00390000
      S0=(DFLOAT(2*L+3)*Z*S1-DFLOAT(L+2)*S2)/DFLOAT(L+1)                00400000
      S2=S1                                                             00410000
      S1=S0                                                             00420000
      IF(L.GT.NM1) GO TO 10                                             00430000
      QM0(L1)=S0                                                        00440000
   10 CONTINUE                                                          00450000
      RATIO=BB/QM0(1)                                                   00460000
      DO 20 K=1,NM1                                                     00470000
   20 QM0(K)=QM0(K)*RATIO                                               00480000
    9 IF(M.GE.1) GO TO 3                                                00490000
      DO 25 N=1,NMAX                                                    00500000
   25 Q(N)=QM0(N)                                                       00510000
      RETURN                                                            00520000
    3 DO 30 I=1,NMAX                                                    00530000
      II=I-1                                                            00540000
   30 QM1(I)=DFLOAT(II+1)*AA*(QM0(I+1)-Z*QM0(I))                        00550000
      IF(M.GE.2) GO TO 4                                                00560000
      DO 35 N=1,NMAX                                                    00570000
   35 Q(N)=QM1(N)                                                       00580000
      RETURN                                                            00590000
    4 DO 40 J=1,NMAX                                                    00600000
      JJ=J-1                                                            00610000
      T0=QM0(J)                                                         00620000
      T1=QM1(J)                                                         00630000
      IM=0                                                              00640000
    5 T2=DFLOAT((JJ-IM)*(JJ+IM+1))*T0-DFLOAT(2*IM+2)*Z*AA*T1            00650000
      IM2=IM+2                                                          00660000
      IF(IM2.GE.M) GO TO 7                                              00670000
      T0=T1                                                             00680000
      T1=T2                                                             00690000
      IM=IM+1                                                           00700000
      GO TO 5                                                           00710000
    7 Q(J)=T2                                                           00720000
   40 CONTINUE                                                          00730000
      RETURN                                                            00740000
      END                                                               00750000
